const path = require('path')

// const CompressionWebpackPlugin = require('compression-webpack-plugin')
const CompressionWebpackPlugin = require('compression-webpack-plugin'); // 开启压缩
const resolve = dir => {
    return path.join(__dirname, dir)
}

// 项目部署基础
// 默认情况下，我们假设你的应用将被部署在域的根目录下,
// 例如：https://www.my-app.com/
// 默认：'/'
// 如果您的应用程序部署在子路径中，则需要在这指定子路径
// 例如：https://www.foobar.com/my-app/
// 需要将它改为'/my-app/'
// iview-admin线上演示打包路径： https://file.iviewui.com/admin-dist/
// console.log(process.env.NODE_ENV, process.env.VUE_APP_EVN_CONFIG)
const BASE_URL = process.env.NODE_ENV === 'production' ? './' : './'

// https://cdn.bootcdn.net/ajax/libs/vuex/3.0.1/vuex.min.js
// const cdn = {
//   js: ['https://cdn.bootcdn.net/ajax/libs/vuex/3.0.1/vuex.min.js']
// }

module.exports = {
    // Project deployment base
    // By default we assume your app will be deployed at the root of a domain,
    // e.g. https://www.my-app.com/
    // If your app is deployed at a sub-path, you will need to specify that
    // sub-path here. For example, if your app is deployed at
    // https://www.foobar.com/my-app/
    // then change this to '/my-app/'
    publicPath: BASE_URL,
    // tweak internal webpack configuration.
    // see https://github.com/vuejs/vue-cli/blob/dev/docs/webpack.md
    // 如果你不需要使用eslint，把lintOnSave设为false即可
    lintOnSave: false,

    chainWebpack: config => {
        config.resolve.symlinks(true)
        config.resolve.alias
            .set('@', resolve('src')) // key,value自行定义，比如.set('@@', resolve('src/components'))
            .set('_c', resolve('src/components'))
    },
    configureWebpack: config => {
        // 取消console打印
        config.optimization.minimizer[0].options.terserOptions.compress.drop_console = true
        config.mode = 'production'
        // 检测打包文件 大小
        config['performance'] = {
            // 打包文件大小配置
            maxEntrypointSize: 10000000,
            maxAssetSize: 30000000
        }
        config.externals = {
            echarts: 'Echarts',
        }
        const plugins = [];
        // 服务器也要相应开启gzip
        plugins.push(
            new CompressionWebpackPlugin({
                algorithm: 'gzip',
                test: /\.(js|css)$/,// 匹配文件名
                threshold: 10000, // 对超过10k的数据压缩
                deleteOriginalAssets: false, // 不删除源文件
                minRatio: 0.8 // 压缩比
            })
        )
        // 取消webpack警告的性能提示
        config.performance = {
            hints: 'warning',
            //入口起点的最大体积
            maxEntrypointSize: 1000 * 500,
            //生成文件的最大体积
            maxAssetSize: 1000 * 1000,
            //只给出 js 文件的性能提示
            assetFilter: function (assetFilename) {
                return assetFilename.endsWith('.js');
            }
        }
        // config.plugins = [
        //   new CompressionPlugin({
        //     algorithm: 'gzip', // 使用gzip压缩
        //     test: /\.js$|\.html$|\.css$/, // 匹配文件名
        //     filename: '[path].gz[query]', // 压缩后的文件名(保持原文件名，后缀加.gz)
        //     minRatio: 1, // 压缩率小于1才会压缩
        //     threshold: 10240, // 对超过10k的数据压缩
        //     deleteOriginalAssets: false // 是否删除未压缩的源文件，谨慎设置，如果希望提供非gzip的资源，可不设置或者设置为false（比如删除打包后的gz后还可以加载到原始资源文件）
        //   })
        // ]
        // }
        return { plugins }
    },

    // 设为false打包时不生成.map文件
    productionSourceMap: false,
    devServer: {
        port: 9006,
        // host:'localhost',
        // proxy: {
        //     '/': {
        //         target: 'http://192.168.0.106:8091',
        //         // eslint-disable-next-line no-undef
        //         // process.env.NODE_ENV === 'production' || process.env.VUE_APP_EVN_CONFIG === 'pro'
        //         //   ? 'https://preshoufei.yzxsaas.com/api'
        //         //   : process.env.NODE_ENV === 'prerelease' || process.env.VUE_APP_EVN_CONFIG === 'pre' // 预发布
        //         //   ? 'https://preshoufei.yzxsaas.com/api'
        //         //    :
        //         // 'https://preshoufei.yzxsaas.com/api',
        //         //'http://192.168.0.228:8090', // 王
        //         // 'http://192.168.0.10:8090', // 梁
        //         // 'http://192.168.0.153:8091/api', // 周
        //         // pathRewrite: {
        //         //     '^/api': '/api'
        //         // },
        //         ws: true,
        //         changeOrigin: true,
        //         secure: false
        //     }
        // },
        allowedHosts: ['ec.onthesky.cn'],
        disableHostCheck: true
    }
    // 这里写你调用接口的基础路径，来解决跨域，如果设置了代理，那你本地开发环境的axios的baseUrl要写为 '' ，即空字符串
    // devServer: {
    //   proxy: 'localhost:3000'
    // }
}
